package leecode.字符串;

/**
 * @author wangxi03 created on 2021/5/13 10:55 上午
 * @version v1.0
 *
 * https://leetcode-cn.com/problems/longest-palindromic-substring/solution/chao-jian-dan-de-zhong-xin-kuo-san-fa-yi-qini/
 *
 * 解题思路
 * 两种情况
 * 一种是回文子串长度为奇数（如aba，中心是b）
 * 另一种回文子串长度为偶数（如abba，中心是b，b）
 *
 * 循环遍历字符串 对取到的每个值 都假设他可能成为最后的中心进行判断
 *
 *
 */
public class GetLongestPalindrome {
    int max = 0;
    String res = "";
    public int getLongestPalindrome(String A, int n) {
        // write code here
        if (A == null || A.length() <= 0) {
            return 0;
        }

        // 循环遍历字符串 对取到的每个值 都假设他可能成为最后的中心进行判断
        for (int i = 0; i < A.length(); i++) {
            // 回文子串长度是奇数
            help(A, i, i);
            // 回文子串长度是偶数
            help(A, i, i + 1);
        }
        return res.length();
    }

    private void help(String s, int left, int right) {
        while (left >= 0 && right < s.length() && s.charAt(left) == s.charAt(right)) {
            left--;
            right++;
        }
        // 注意此处m,n的值循环完后  是恰好不满足循环条件的时刻
        // 计算最大回文字符串
        int curLen = right - left - 1;
        if (curLen > max) {
            max = curLen;
            res = s.substring(left + 1, right);
        }
    }
}
